<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/uidgid.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/uidgid.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1VJREdJRF9IXzA_"><span class="b">_LINUX_UIDGID_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1VJREdJRF9IXzA_"><span class="b">_LINUX_UIDGID_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="k">/*</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="k"> * A set of types for the internal kernel types representing uids and gids.</span>
<a name="6" /><span class="Maybe">       6:</span> <span class="k"> *</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="k"> * The types defined in this header allow distinguishing which uids and gids in</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="k"> * the kernel are values used by userspace and which uid and gid values are</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="k"> * the internal kernel values.  With the addition of user namespaces the values</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="k"> * can be different.  Using the type system makes it possible for the compiler</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="k"> * to detect when we overlook these differences.</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="k"> *</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="k"> */</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">highuid</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="16" /><span class="Maybe">      16:</span> 
<a name="17" /><span class="Maybe">      17:</span> <span class="m">struct</span> <span class="b">user_namespace</span><span class="f">;</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">user_namespace</span> <span class="b">init_user_ns</span><span class="f">;</span>
<a name="19" /><span class="Maybe">      19:</span> 
<a name="20" /><span class="False">      20:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_UIDGID_STRICT_TYPE_CHECKS</span>
<a name="21" /><span class="False">      21:</span> 
<a name="22" /><span class="False">      22:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="23" /><span class="False">      23:</span>     <span class="b">uid_t</span> <span class="b">val</span><span class="f">;</span>
<a name="24" /><span class="False">      24:</span> <span class="f">}</span> <span class="b">kuid_t</span><span class="f">;</span>
<a name="25" /><span class="False">      25:</span> 
<a name="26" /><span class="False">      26:</span> 
<a name="27" /><span class="False">      27:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="28" /><span class="False">      28:</span>     <span class="b">gid_t</span> <span class="b">val</span><span class="f">;</span>
<a name="29" /><span class="False">      29:</span> <span class="f">}</span> <span class="b">kgid_t</span><span class="f">;</span>
<a name="30" /><span class="False">      30:</span> 
<a name="31" /><span class="False">      31:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_S1VJRFRfSU5JVF8w"><span class="b">KUIDT_INIT</span></a><span class="f">(</span><span class="b">value</span><span class="f">)</span> <span class="f">(</span><span class="b">kuid_t</span><span class="f">)</span><span class="f">{</span> <span class="b">value</span> <span class="f">}</span>
<a name="32" /><span class="False">      32:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_S0dJRFRfSU5JVF8w"><span class="b">KGIDT_INIT</span></a><span class="f">(</span><span class="b">value</span><span class="f">)</span> <span class="f">(</span><span class="b">kgid_t</span><span class="f">)</span><span class="f">{</span> <span class="b">value</span> <span class="f">}</span>
<a name="33" /><span class="False">      33:</span> 
<a name="34" /><span class="False">      34:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">uid_t</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">kuid_t</span> <span class="b">uid</span><span class="f">)</span>
<a name="35" /><span class="False">      35:</span> <span class="f">{</span>
<a name="36" /><span class="False">      36:</span>     <span class="m">return</span> <span class="b">uid</span><span class="f">.</span><span class="b">val</span><span class="f">;</span>
<a name="37" /><span class="False">      37:</span> <span class="f">}</span>
<a name="38" /><span class="False">      38:</span> 
<a name="39" /><span class="False">      39:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">gid_t</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">kgid_t</span> <span class="b">gid</span><span class="f">)</span>
<a name="40" /><span class="False">      40:</span> <span class="f">{</span>
<a name="41" /><span class="False">      41:</span>     <span class="m">return</span> <span class="b">gid</span><span class="f">.</span><span class="b">val</span><span class="f">;</span>
<a name="42" /><span class="False">      42:</span> <span class="f">}</span>
<a name="43" /><span class="False">      43:</span> 
<a name="44" /><span class="Maybe">      44:</span> <span class="f">#</span><span class="n">else</span>
<a name="45" /><span class="Maybe">      45:</span> 
<a name="46" /><span class="Maybe">      46:</span> <span class="m">typedef</span> <span class="b">uid_t</span> <span class="b">kuid_t</span><span class="f">;</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="m">typedef</span> <span class="b">gid_t</span> <span class="b">kgid_t</span><span class="f">;</span>
<a name="48" /><span class="Maybe">      48:</span> 
<a name="49" /><span class="Maybe">      49:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">uid_t</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">kuid_t</span> <span class="b">uid</span><span class="f">)</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="f">{</span>
<a name="51" /><span class="Maybe">      51:</span>     <span class="m">return</span> <span class="b">uid</span><span class="f">;</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="f">}</span>
<a name="53" /><span class="Maybe">      53:</span> 
<a name="54" /><span class="Maybe">      54:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">gid_t</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">kgid_t</span> <span class="b">gid</span><span class="f">)</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="f">{</span>
<a name="56" /><span class="Maybe">      56:</span>     <span class="m">return</span> <span class="b">gid</span><span class="f">;</span>
<a name="57" /><span class="Maybe">      57:</span> <span class="f">}</span>
<a name="58" /><span class="Maybe">      58:</span> 
<a name="59" /><span class="Maybe">      59:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_S1VJRFRfSU5JVF8w"><span class="b">KUIDT_INIT</span></a><span class="f">(</span><span class="b">value</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">kuid_t</span><span class="f">)</span> <span class="b">value</span> <span class="f">)</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_S0dJRFRfSU5JVF8w"><span class="b">KGIDT_INIT</span></a><span class="f">(</span><span class="b">value</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">kgid_t</span><span class="f">)</span> <span class="b">value</span> <span class="f">)</span>
<a name="61" /><span class="Maybe">      61:</span> 
<a name="62" /><span class="Maybe">      62:</span> <span class="f">#</span><span class="n">endif</span>
<a name="63" /><span class="Maybe">      63:</span> 
<a name="64" /><span class="Maybe">      64:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0xPQkFMX1JPT1RfVUlEXzA_"><span class="b">GLOBAL_ROOT_UID</span></a> <a href="cpu.c_macros_ref.html#_S1VJRFRfSU5JVF8w"><span class="b">KUIDT_INIT</span></a><span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0xPQkFMX1JPT1RfR0lEXzA_"><span class="b">GLOBAL_ROOT_GID</span></a> <a href="cpu.c_macros_ref.html#_S0dJRFRfSU5JVF8w"><span class="b">KGIDT_INIT</span></a><span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="66" /><span class="Maybe">      66:</span> 
<a name="67" /><span class="Maybe">      67:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_SU5WQUxJRF9VSURfMA__"><span class="b">INVALID_UID</span></a> <a href="cpu.c_macros_ref.html#_S1VJRFRfSU5JVF8w"><span class="b">KUIDT_INIT</span></a><span class="f">(</span><span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_SU5WQUxJRF9HSURfMA__"><span class="b">INVALID_GID</span></a> <a href="cpu.c_macros_ref.html#_S0dJRFRfSU5JVF8w"><span class="b">KGIDT_INIT</span></a><span class="f">(</span><span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="69" /><span class="Maybe">      69:</span> 
<a name="70" /><span class="Maybe">      70:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">uid_eq</span><span class="f">(</span><span class="b">kuid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="f">{</span>
<a name="72" /><span class="Maybe">      72:</span>     <span class="m">return</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">==</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="f">}</span>
<a name="74" /><span class="Maybe">      74:</span> 
<a name="75" /><span class="Maybe">      75:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">gid_eq</span><span class="f">(</span><span class="b">kgid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="76" /><span class="Maybe">      76:</span> <span class="f">{</span>
<a name="77" /><span class="Maybe">      77:</span>     <span class="m">return</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">==</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="78" /><span class="Maybe">      78:</span> <span class="f">}</span>
<a name="79" /><span class="Maybe">      79:</span> 
<a name="80" /><span class="Maybe">      80:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">uid_gt</span><span class="f">(</span><span class="b">kuid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="81" /><span class="Maybe">      81:</span> <span class="f">{</span>
<a name="82" /><span class="Maybe">      82:</span>     <span class="m">return</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">&gt;</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="83" /><span class="Maybe">      83:</span> <span class="f">}</span>
<a name="84" /><span class="Maybe">      84:</span> 
<a name="85" /><span class="Maybe">      85:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">gid_gt</span><span class="f">(</span><span class="b">kgid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="86" /><span class="Maybe">      86:</span> <span class="f">{</span>
<a name="87" /><span class="Maybe">      87:</span>     <span class="m">return</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">&gt;</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="f">}</span>
<a name="89" /><span class="Maybe">      89:</span> 
<a name="90" /><span class="Maybe">      90:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">uid_gte</span><span class="f">(</span><span class="b">kuid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="91" /><span class="Maybe">      91:</span> <span class="f">{</span>
<a name="92" /><span class="Maybe">      92:</span>     <span class="m">return</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">&gt;=</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="93" /><span class="Maybe">      93:</span> <span class="f">}</span>
<a name="94" /><span class="Maybe">      94:</span> 
<a name="95" /><span class="Maybe">      95:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">gid_gte</span><span class="f">(</span><span class="b">kgid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="96" /><span class="Maybe">      96:</span> <span class="f">{</span>
<a name="97" /><span class="Maybe">      97:</span>     <span class="m">return</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">&gt;=</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="98" /><span class="Maybe">      98:</span> <span class="f">}</span>
<a name="99" /><span class="Maybe">      99:</span> 
<a name="100" /><span class="Maybe">     100:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">uid_lt</span><span class="f">(</span><span class="b">kuid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="101" /><span class="Maybe">     101:</span> <span class="f">{</span>
<a name="102" /><span class="Maybe">     102:</span>     <span class="m">return</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">&lt;</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="103" /><span class="Maybe">     103:</span> <span class="f">}</span>
<a name="104" /><span class="Maybe">     104:</span> 
<a name="105" /><span class="Maybe">     105:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">gid_lt</span><span class="f">(</span><span class="b">kgid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="106" /><span class="Maybe">     106:</span> <span class="f">{</span>
<a name="107" /><span class="Maybe">     107:</span>     <span class="m">return</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">&lt;</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="108" /><span class="Maybe">     108:</span> <span class="f">}</span>
<a name="109" /><span class="Maybe">     109:</span> 
<a name="110" /><span class="Maybe">     110:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">uid_lte</span><span class="f">(</span><span class="b">kuid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="111" /><span class="Maybe">     111:</span> <span class="f">{</span>
<a name="112" /><span class="Maybe">     112:</span>     <span class="m">return</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">&lt;=</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="113" /><span class="Maybe">     113:</span> <span class="f">}</span>
<a name="114" /><span class="Maybe">     114:</span> 
<a name="115" /><span class="Maybe">     115:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">gid_lte</span><span class="f">(</span><span class="b">kgid_t</span> <span class="b">left</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">right</span><span class="f">)</span>
<a name="116" /><span class="Maybe">     116:</span> <span class="f">{</span>
<a name="117" /><span class="Maybe">     117:</span>     <span class="m">return</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">left</span><span class="f">)</span> <span class="f">&lt;=</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">right</span><span class="f">)</span><span class="f">;</span>
<a name="118" /><span class="Maybe">     118:</span> <span class="f">}</span>
<a name="119" /><span class="Maybe">     119:</span> 
<a name="120" /><span class="Maybe">     120:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">uid_valid</span><span class="f">(</span><span class="b">kuid_t</span> <span class="b">uid</span><span class="f">)</span>
<a name="121" /><span class="Maybe">     121:</span> <span class="f">{</span>
<a name="122" /><span class="Maybe">     122:</span>     <span class="m">return</span> <span class="f">!</span><span class="b">uid_eq</span><span class="f">(</span><span class="b">uid</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_SU5WQUxJRF9VSURfMA__"><span class="b">INVALID_UID</span></a><span class="f">)</span><span class="f">;</span>
<a name="123" /><span class="Maybe">     123:</span> <span class="f">}</span>
<a name="124" /><span class="Maybe">     124:</span> 
<a name="125" /><span class="Maybe">     125:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">gid_valid</span><span class="f">(</span><span class="b">kgid_t</span> <span class="b">gid</span><span class="f">)</span>
<a name="126" /><span class="Maybe">     126:</span> <span class="f">{</span>
<a name="127" /><span class="Maybe">     127:</span>     <span class="m">return</span> <span class="f">!</span><span class="b">gid_eq</span><span class="f">(</span><span class="b">gid</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_SU5WQUxJRF9HSURfMA__"><span class="b">INVALID_GID</span></a><span class="f">)</span><span class="f">;</span>
<a name="128" /><span class="Maybe">     128:</span> <span class="f">}</span>
<a name="129" /><span class="Maybe">     129:</span> 
<a name="130" /><span class="False">     130:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_USER_NS</span>
<a name="131" /><span class="False">     131:</span> 
<a name="132" /><span class="False">     132:</span> <span class="m">extern</span> <span class="b">kuid_t</span> <span class="b">make_kuid</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">from</span><span class="f">,</span> <span class="b">uid_t</span> <span class="b">uid</span><span class="f">)</span><span class="f">;</span>
<a name="133" /><span class="False">     133:</span> <span class="m">extern</span> <span class="b">kgid_t</span> <span class="b">make_kgid</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">from</span><span class="f">,</span> <span class="b">gid_t</span> <span class="b">gid</span><span class="f">)</span><span class="f">;</span>
<a name="134" /><span class="False">     134:</span> 
<a name="135" /><span class="False">     135:</span> <span class="m">extern</span> <span class="b">uid_t</span> <span class="b">from_kuid</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">to</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">uid</span><span class="f">)</span><span class="f">;</span>
<a name="136" /><span class="False">     136:</span> <span class="m">extern</span> <span class="b">gid_t</span> <span class="b">from_kgid</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">to</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">gid</span><span class="f">)</span><span class="f">;</span>
<a name="137" /><span class="False">     137:</span> <span class="m">extern</span> <span class="b">uid_t</span> <span class="b">from_kuid_munged</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">to</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">uid</span><span class="f">)</span><span class="f">;</span>
<a name="138" /><span class="False">     138:</span> <span class="m">extern</span> <span class="b">gid_t</span> <span class="b">from_kgid_munged</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">to</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">gid</span><span class="f">)</span><span class="f">;</span>
<a name="139" /><span class="False">     139:</span> 
<a name="140" /><span class="False">     140:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">kuid_has_mapping</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">ns</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">uid</span><span class="f">)</span>
<a name="141" /><span class="False">     141:</span> <span class="f">{</span>
<a name="142" /><span class="False">     142:</span>     <span class="m">return</span> <span class="b">from_kuid</span><span class="f">(</span><span class="b">ns</span><span class="f">,</span> <span class="b">uid</span><span class="f">)</span> <span class="f">!=</span> <span class="f">(</span><span class="b">uid_t</span><span class="f">)</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>
<a name="143" /><span class="False">     143:</span> <span class="f">}</span>
<a name="144" /><span class="False">     144:</span> 
<a name="145" /><span class="False">     145:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">kgid_has_mapping</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">ns</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">gid</span><span class="f">)</span>
<a name="146" /><span class="False">     146:</span> <span class="f">{</span>
<a name="147" /><span class="False">     147:</span>     <span class="m">return</span> <span class="b">from_kgid</span><span class="f">(</span><span class="b">ns</span><span class="f">,</span> <span class="b">gid</span><span class="f">)</span> <span class="f">!=</span> <span class="f">(</span><span class="b">gid_t</span><span class="f">)</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>
<a name="148" /><span class="False">     148:</span> <span class="f">}</span>
<a name="149" /><span class="False">     149:</span> 
<a name="150" /><span class="Maybe">     150:</span> <span class="f">#</span><span class="n">else</span>
<a name="151" /><span class="Maybe">     151:</span> 
<a name="152" /><span class="Maybe">     152:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">kuid_t</span> <span class="b">make_kuid</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">from</span><span class="f">,</span> <span class="b">uid_t</span> <span class="b">uid</span><span class="f">)</span>
<a name="153" /><span class="Maybe">     153:</span> <span class="f">{</span>
<a name="154" /><span class="Maybe">     154:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_S1VJRFRfSU5JVF8w"><span class="b">KUIDT_INIT</span></a><span class="f">(</span><span class="b">uid</span><span class="f">)</span><span class="f">;</span>
<a name="155" /><span class="Maybe">     155:</span> <span class="f">}</span>
<a name="156" /><span class="Maybe">     156:</span> 
<a name="157" /><span class="Maybe">     157:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">kgid_t</span> <span class="b">make_kgid</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">from</span><span class="f">,</span> <span class="b">gid_t</span> <span class="b">gid</span><span class="f">)</span>
<a name="158" /><span class="Maybe">     158:</span> <span class="f">{</span>
<a name="159" /><span class="Maybe">     159:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_S0dJRFRfSU5JVF8w"><span class="b">KGIDT_INIT</span></a><span class="f">(</span><span class="b">gid</span><span class="f">)</span><span class="f">;</span>
<a name="160" /><span class="Maybe">     160:</span> <span class="f">}</span>
<a name="161" /><span class="Maybe">     161:</span> 
<a name="162" /><span class="Maybe">     162:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">uid_t</span> <span class="b">from_kuid</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">to</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">kuid</span><span class="f">)</span>
<a name="163" /><span class="Maybe">     163:</span> <span class="f">{</span>
<a name="164" /><span class="Maybe">     164:</span>     <span class="m">return</span> <span class="b">__kuid_val</span><span class="f">(</span><span class="b">kuid</span><span class="f">)</span><span class="f">;</span>
<a name="165" /><span class="Maybe">     165:</span> <span class="f">}</span>
<a name="166" /><span class="Maybe">     166:</span> 
<a name="167" /><span class="Maybe">     167:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">gid_t</span> <span class="b">from_kgid</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">to</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">kgid</span><span class="f">)</span>
<a name="168" /><span class="Maybe">     168:</span> <span class="f">{</span>
<a name="169" /><span class="Maybe">     169:</span>     <span class="m">return</span> <span class="b">__kgid_val</span><span class="f">(</span><span class="b">kgid</span><span class="f">)</span><span class="f">;</span>
<a name="170" /><span class="Maybe">     170:</span> <span class="f">}</span>
<a name="171" /><span class="Maybe">     171:</span> 
<a name="172" /><span class="Maybe">     172:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">uid_t</span> <span class="b">from_kuid_munged</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">to</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">kuid</span><span class="f">)</span>
<a name="173" /><span class="Maybe">     173:</span> <span class="f">{</span>
<a name="174" /><span class="Maybe">     174:</span>     <span class="b">uid_t</span> <span class="b">uid</span> <span class="f">=</span> <span class="b">from_kuid</span><span class="f">(</span><span class="b">to</span><span class="f">,</span> <span class="b">kuid</span><span class="f">)</span><span class="f">;</span>
<a name="175" /><span class="Maybe">     175:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">uid</span> <span class="f">==</span> <span class="f">(</span><span class="b">uid_t</span><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="176" /><span class="Maybe">     176:</span>         <span class="b">uid</span> <span class="f">=</span> <span class="b">overflowuid</span><span class="f">;</span>
<a name="177" /><span class="Maybe">     177:</span>     <span class="m">return</span> <span class="b">uid</span><span class="f">;</span>
<a name="178" /><span class="Maybe">     178:</span> <span class="f">}</span>
<a name="179" /><span class="Maybe">     179:</span> 
<a name="180" /><span class="Maybe">     180:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">gid_t</span> <span class="b">from_kgid_munged</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">to</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">kgid</span><span class="f">)</span>
<a name="181" /><span class="Maybe">     181:</span> <span class="f">{</span>
<a name="182" /><span class="Maybe">     182:</span>     <span class="b">gid_t</span> <span class="b">gid</span> <span class="f">=</span> <span class="b">from_kgid</span><span class="f">(</span><span class="b">to</span><span class="f">,</span> <span class="b">kgid</span><span class="f">)</span><span class="f">;</span>
<a name="183" /><span class="Maybe">     183:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">gid</span> <span class="f">==</span> <span class="f">(</span><span class="b">gid_t</span><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="184" /><span class="Maybe">     184:</span>         <span class="b">gid</span> <span class="f">=</span> <span class="b">overflowgid</span><span class="f">;</span>
<a name="185" /><span class="Maybe">     185:</span>     <span class="m">return</span> <span class="b">gid</span><span class="f">;</span>
<a name="186" /><span class="Maybe">     186:</span> <span class="f">}</span>
<a name="187" /><span class="Maybe">     187:</span> 
<a name="188" /><span class="Maybe">     188:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">kuid_has_mapping</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">ns</span><span class="f">,</span> <span class="b">kuid_t</span> <span class="b">uid</span><span class="f">)</span>
<a name="189" /><span class="Maybe">     189:</span> <span class="f">{</span>
<a name="190" /><span class="Maybe">     190:</span>     <span class="m">return</span> <span class="m">true</span><span class="f">;</span>
<a name="191" /><span class="Maybe">     191:</span> <span class="f">}</span>
<a name="192" /><span class="Maybe">     192:</span> 
<a name="193" /><span class="Maybe">     193:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">kgid_has_mapping</span><span class="f">(</span><span class="m">struct</span> <span class="b">user_namespace</span> <span class="f">*</span><span class="b">ns</span><span class="f">,</span> <span class="b">kgid_t</span> <span class="b">gid</span><span class="f">)</span>
<a name="194" /><span class="Maybe">     194:</span> <span class="f">{</span>
<a name="195" /><span class="Maybe">     195:</span>     <span class="m">return</span> <span class="m">true</span><span class="f">;</span>
<a name="196" /><span class="Maybe">     196:</span> <span class="f">}</span>
<a name="197" /><span class="Maybe">     197:</span> 
<a name="198" /><span class="Maybe">     198:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_USER_NS */</span>
<a name="199" /><span class="Maybe">     199:</span> 
<a name="200" /><span class="True">     200:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _LINUX_UIDGID_H */</span>
<a name="201" /><span class="True">     201:</span> </pre>
  </body>
</html>
